package main

import (
	"context"
	"git.900sui.cn/kc/base/utils"
	"git.900sui.cn/kc/kcgin"
	"git.900sui.cn/kc/kcgin/logs"
	"git.900sui.cn/kc/rpcinterface/client/market"
	market2 "git.900sui.cn/kc/rpcinterface/interface/market"
	"github.com/robfig/cron"
)

func main() {
	logs.Info("Environment Variable:MSF_ENV:", kcgin.KcConfig.RunMode)
	c := cron.New()
	//每天0点执行一次---用于更新拼团活动
	_ = c.AddFunc("0 0 0 * * ?", autoUpdateGroupStatus)
	//每10s跑一次---用于更新待成团活动
	_ = c.AddFunc("@every 10s", autoUpdateOfferedStatus)
	c.Start()
	select {}
}

// 定时自动更新拼团活动状态：未开始->进行中；进行中->已结束
func autoUpdateGroupStatus() {
	rpcGroup := new(market.GroupBooking).Init()
	defer rpcGroup.Close()
	new(utils.KcLog).GetInstance(kcgin.AppConfig.String("crontab.log.autoUpdateGroupStatus"))
	var reply market2.ReplyAutoUpdateGroupStatusRpc
	if err := rpcGroup.AutoUpdateGroupStatusRpc(context.Background(), &market2.ArgsAutoUpdateGroupStatusRpc{}, &reply); err != nil {
		utils.Logerr.Printf("定时自动更新拼团活动状态失败，错误：%s\n", err.Error())
		return
	}
	//utils.Logerr.Printf("定时自动更新拼团活动状态完成")
}

// 定时自动更新待成团的拼单状态：有效期结束后后自动更改拼团状态为已完成
func autoUpdateOfferedStatus() {
	rpcGroup := new(market.GroupBooking).Init()
	defer rpcGroup.Close()
	new(utils.KcLog).GetInstance(kcgin.AppConfig.String("crontab.log.autoUpdateOfferedStatus"))
	var reply bool
	if err := rpcGroup.AutoUpdateOfferedStatusRpc(context.Background(), &market2.EmptyStruct{}, &reply); err != nil {
		utils.Logerr.Printf("定时自动更新已发起的拼单（待成团的订单）状态，错误：%s\n", err.Error())
		return
	}
	//utils.Logerr.Printf("定时自动更新已发起的拼单（待成团的订单）状态完成")
}
